// TODO  修改谨慎 很多页面都引用到，如果实现不了页面的需求 这个mixin真的不在适合你的页面使用

// mixin
import {_PAGE__COUNT, ERR_OK} from "@/config";
// 上拉加载
export default {
    data() {
        return {
            page: 1, // page码
            pageSize: _PAGE__COUNT, // 请求条数
            rowcount: 0, // 最大数
            list: [], // view 渲染列表 通用化 list 注意page命名
            loading: false,      // 上拉加载
            finished: false,      // 加载完毕
            refreshing: false,      // 下拉刷新
            endSuccessText: '刷新成功', // 成功 失败
            error: false, // 请求结果错误
        }
    },

    methods: {
        onRefreshInitList() {
            this.page = 1;
            this.error = false;
            this.onLoad();
        },
        // 请求下拉加载 结束 处理项
        onEndLoad(res, resListName, cb) {
            this.loading = false;
            if (res.errorCode === ERR_OK) {
                this.rowcount = res.rowcount || (res.datedec || {}).rowcount || 0;
                // 请求第一页 结束 清除 加载中ui  mixins 【 loadingState 】组合使用
                typeof this.rmLoading === "function" && this.rmLoading();
                // 列表数据 读取 回调处理 返回结果 or 使用name 主动读取 or 没有name 这层结构 问题拦截处理。。
                let newsList = [];
                if (typeof cb === "function") {
                    newsList = cb()
                } else if (resListName) {
                    newsList = res.datedec[resListName]
                } else {
                    //....
                }

                // 第一页 代表着初始状态
                if (this.page === 1) {
                    this.refreshing = false;
                    this.list = []
                    this.finished = false;
                    this.isLoading = false;
                    this.endSuccessText = '刷新成功'
                }

                this.list = [...this.list, ...newsList]
                //没有更多
                if (this.rowcount === 0 || this.list.length === this.rowcount || newsList.length !== this.pageSize) {
                    this.finished = true;
                    this.page !== 1 && this.$toast('已经到底了，没有更多～');
                } else {
                    this.page++;
                }
                newsList = null

            } else {
                this.rmLoading()
                this.isLoading = false;
                this.finished = true;
                // 请求结果错误
                this.refreshing = false;
                this.error = true;
                this.endSuccessText = '刷新失败，请重新尝试'
            }
        }
    }
}
